// Copyright (C) 1997-2002 Alias|Wavefront,
// a division of Silicon Graphics Limited.
//
// The information in this file is provided for the exclusive use of the
// licensees of Alias|Wavefront.  Such users have the right to use, modify,
// and incorporate this code into other products for purposes authorized
// by the Alias|Wavefront license agreement, without fee.
//
// ALIAS|WAVEFRONT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
// INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
// EVENT SHALL ALIAS|WAVEFRONT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
// CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
//
//
// Alias|Wavefront Script File
// MODIFY THIS AT YOUR OWN RISK
//
// Creation Date:  14 January 1999
//
//
//
//  Procedure Name:
//      duplicateSurfaceToolScript
//
//  Description:
//	create wrapper around the duplicateSurface command
//
//  Input Arguments:
//		0 ==> do the command.
//		1 ==> show the action option box
//		2 ==> return the command
//		3 ==> show tool option box
//		4 ==> enter the tool
//
//  Return Value:
//      None.
//

global proc duplicateSurfaceToolSetup( int $forceFactorySettings,
									 string $goToTool )
{
	if( $forceFactorySettings || !`optionVar -ex duplicateSurfaceEuc` ) {
		optionVar -iv duplicateSurfaceEuc 0;
	}
	if( $forceFactorySettings || !`optionVar -ex duplicateSurfaceLac` ) {
		optionVar -iv duplicateSurfaceLac 1;
	}
	if( "" != $goToTool ) {
		scriptCtx -e -euc `optionVar -q duplicateSurfaceEuc` $goToTool;
		scriptCtx -e -lac `optionVar -q duplicateSurfaceLac` $goToTool;
	}
}

global proc duplicateSurfaceValues ( string $toolName ) 
{
	performDuplicateSurface 3 $toolName;
	scriptCtxCommonValues( $toolName );
}

global proc duplicateSurfaceProperties()
{
	scriptCtxCommonProperties;
}

proc createDuplicateSurfaceContext( string $tool )
{
	if( ! `scriptCtx -exists $tool` ) {
		duplicateSurfaceToolSetup( 0, "" );
		scriptCtx -i1 "duplicateSurface.xpm"
		  -title "Duplicate Surface Surface Tool"
		  -bcn "duplicateSurface"

		  -totalSelectionSets 1
		  -expandSelectionList true
		  -fcs ("duplicateSurfaceToolScript 0")

		  -setNoSelectionPrompt ("Select NURBS patches" +
								 " to duplicate as NURBS " +
								 "surfaces.")
		  -setSelectionPrompt ("Select NURBS patches" +
							   " to duplicate as NURBS " +
							   "surfaces.  Press ENTER to duplicate.")

		  -showManipulators true
		  -setSelectionCount 0
		  -setAutoToggleSelection true

		  -setAutoComplete `optionVar -q duplicateSurfaceLac`
		  -exitUponCompletion `optionVar -q duplicateSurfaceEuc`
		  -setAllowExcessCount true

		  -surfaceFace true
		$tool;
	}
}

global proc string duplicateSurfaceToolScript( int $setToTool )
//
//	Description :
//		0 ==> do the command.
//		1 ==> show the action option box
//		2 ==> return the command
//		3 ==> show tool/action option box
//		4 ==> enter the tool/do the command
{
	string $tool = "";
	if( $setToTool > 2 ) {
		if( !`optionVar -q modelWithToolDuplicateSurface` ) {
			$setToTool = 4 - $setToTool;
		}
		else {
			$tool = "duplicateSurfaceContext";
			createDuplicateSurfaceContext $tool;
		}
	}
	return scriptToolScript( "performDuplicateSurface", $setToTool, $tool );
}
